home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 1 / Meeting Pearls Vol 1 (1994).iso / installed_progs / text / faqs / object-faq.part5 < prev    next >
Encoding:
Internet Message Format  |  1993-12-15  |  58.3 KB

  1. Subject: Comp.Object FAQ Version 1.0.5 (12-13) Part 5/8
  2. Newsgroups: comp.object,comp.answers,news.answers
  3. From: Bob Hathaway <rjh@geodesic.com>
  4. Date: Tue, 14 Dec 1993 04:47:21 GMT
  5.  
  6. Archive-name: object-faq/part5
  7. Last-Modified: 12/13/93
  8. Version: 1.0.5
  9.  
  10. Workgroup through enterprise-wide and cross-enterprise computing is supported
  11. via a distributed client/server architecture that provides a single logical
  12. view over multiple databases on heterogeneous machines.  The user sees a
  13. logical view of objects connected to objects and need not worry that one object
  14. is in a database on a Sun workstation, while another may be in a database under
  15. Windows or VMS.  All operations work transparently across this environment,
  16. including atomic transactions with two-phase commit, propagating methods, and
  17. versioning.  Objects may be moved between databases and platforms without
  18. affecting working applications or requiring changes to the applications. 
  19. Multiple schemas may be created, without affecting other users or databases,
  20. and may be used simultaneously with shared schemas, allowing local groups to
  21. define their own models but still connect to other groups.  Databases may be
  22. detached from this shared environment (federated database) and used on portable
  23. devices, reconnected or moved to different (compatible) environment, or
  24. distributed as parts or image libraries.  Gateways to RDBMSs are provided via
  25. third-party integration with Persistence Software, and more generally to any
  26. foreign data store, as long as the user installs the appropriate access
  27. methods, extending the single-logical-view to include read/write access to
  28. arbitrary foreign data stores.  Together, these allow delegation of
  29. responsibilities to the appropriate users, integration with existing systems,
  30. and gradual migration toward full enterprise-wide sharing.
  31.  
  32. The on-demand object manager directly and automatically manages object access
  33. and buffering, rather than relying on system facilities such as virtual memory
  34. or user manual get/put calls.  Mechanisms used include multiple buffer pools
  35. locally and remotely, b-trees, hashing, scoped names, keys, and iterators, with
  36. distributed catalogues for schemas and databases.  A direct connection is
  37. established between the user and the objects used, so that users do not
  38. conflict unless and until they are competing for the same objects, thus
  39. avoiding the traditional central-server bottleneck.  Short transactions are
  40. based on traditional (transient) locks, owned by the process, and group
  41. together an arbitrary set of operations.  Long transactions are based on
  42. persistent locks, owned by the user, and provide the same arbitrary grouping. 
  43. Default concurrency is two-phase locking and serialization, but extensions
  44. available include MROW, or multiple-readers concurrent with one-writer, and
  45. allow users to lock with or without wait or with timed waits, to implement more
  46. sophisticated mechanisms.
  47.  
  48. Objects may be modeled using C++ structures augmented by classes provided such
  49. as strings, dictionaries, and relationship management, as well as some
  50. particular domain libraries.  A simple object is a C++ class (or C structure)
  51. with associated access methods.  A complex object may include multiple varrays,
  52. each being a dynamically varying sized array of arbitrary structure.  A
  53. composite object is any network of related objects that acts as a single
  54. object, both structurally and behaviorally, via propagation of behaviors to
  55. component objects.  Any number of composite objects may be contained in
  56. composite objects, and a single object may participate in any number of
  57. composites.  The relationship mechanism supports uni- and bi-directional
  58. relationships, one-to-one, one-to-many, and many-to-many.  Versioning is
  59. supported at object granularity, may be turned on or off at any time for each
  60. object, may be restricted to linear or allow branching with multiple writers. 
  61. References to versioned objects may be to a specific version or to the default
  62. version, which may be separately specified by a method and may allow multiple
  63. defaults.  Schema and object evolution are supported via versioning of the
  64. type-defining objects.  Each time a type definition is changed, its defining
  65. object is versioned, allowing arbitrary changes.  Objects may then be instances
  66. of the old or new type version.  Object evolution or upgrading to the new type
  67. version is supported  by the user writing conversion methods which are
  68. installed and invoked by the system.
  69.  
  70. ANSI SQL query is supported in the SQL++ product.  Predicate syntax may be
  71. either C++ or SQL.  The ODBC and SQL Access Group (SAG) protocols are
  72. supported.  Queries may be invoked programatically or interactively, with ad
  73. hoc support.  Access to object features is available via methods and traversal
  74. of relationships.
  75.  
  76. Over forty administrative and developer tools are provided, each with both an
  77. interactive and programmatic interface.  These include GUI object and type
  78. browsers, query browsers, report generator, tools to examine and force short
  79. and long locks, to move objects and databases, etc.  On-line incremental backup
  80. provides a consistent network-wide snapshot, including referential integrity
  81. across all databases, and runs incremental and full database backups with no
  82. need to acquiesce the databases and no interference with active applications. 
  83. All tools are built around a messaging backplane, which supports four levels of
  84. integration with user and third-party tools.  Integrated products include HP
  85. SoftBench (full operational level), CenterLine's ObjectCenter (tool level), 
  86. Persistence RDBMS gateway, PTech and ProtoSoft Design and Analysis (language
  87. level), and XVT and UIM/X (compatibility level).
  88.  
  89. Objectivity/DB is resold by Digital Equipment Corporation as DEC Object/DB,
  90. providing a multi-billion-dollar second source vendor.  Over 50,000 end users
  91. are licensed in production use, with applications including real-time
  92. telecommunications, aerospace, defense, case, CAD/CAM, CIM, manufacturing, oil
  93. & gas, process control, transportation, multi-media, case, document management,
  94. financial analysis, and corporate information management.  Platform support
  95. includes all Sun, all DEC (including VMS, alpha, OSF-1), HP/9000 series (both
  96. 68xxx and PA-RISC), IBM RS/6000, NCR 3300, SGI, Windows 3.1, and Windows NT.
  97.  
  98. On Schema Evolution (from original survey):
  99. In the just-released Version 2.0 (shipping Oct 92), schema evolution
  100. is supported via dynamic versioning of type-defining objects [ie.
  101. class versions -- SMC], and via a step-by-step approach that allows
  102. conversion of instance data via user-provided conversion methods.
  103. Also, a full dynamic type manager interface is available for doing
  104. fancier things.
  105.  
  106. Contact:
  107.  
  108. Drew Wade
  109. Objectivity, Inc.
  110. 800 El Camino Real
  111. Menlo Park, CA  94025 USA
  112. drew@objy.com
  113. 1(415)688-8000 voice
  114. 1(415)325-0939 fax
  115. admin ass't:  Vickie Clements (vickie@objy.com)
  116. information:  info@objy.com
  117.  
  118.  
  119. > ObjectStore (Object Design)
  120.  
  121. Entry on Schema Evolution only:
  122.  
  123. ObjectStore does not provide schema evolution as yet but it has
  124. promised to provide schema evolution in the next release.
  125. [h.subramanian@trl.OZ.AU]
  126.  
  127. ObjectStore is an ODBMS produced by Object Design, Inc.  Release 2,
  128. which is in beta test now, supports schema evolution.  The kinds of
  129. evolution supported include change of a data member's type, addition
  130. and removal of data members, and change in inheritance structure.
  131. There are default transformations built in, (e.g. from int to float),
  132. and user-defined transformations may be run also.
  133.  
  134. Approximately $5-8K
  135.  
  136. [Ian Schmidt, Object Design, Inc. <schmidt@odi.com>]
  137.  
  138.         
  139. > Ontos [formerly VBase] (Ontologic)
  140.  
  141. Entry on schema evolution only:
  142.  
  143. *Ontos provides schema evolution. It allows any class to be modified.
  144. *The major drawback is that data does not migrate ie., instances are
  145. *not modified to adopt to the new class definition. So schema changes
  146. *can be done only on classes that do not contain instances and do not
  147. *have sub classes that contain instances.
  148. *[h.subramanian@trl.OZ.AU]
  149.  
  150. *As a system for experiments, we are currently using ONTOS from
  151. *Ontologic Inc.  Unfortunately, there is no transparent concept of
  152. *schema evolution for populated database. Thus, we still investigate
  153. *how it works.
  154.  
  155. ONTOS has a version of ONTOS for OS/2.  Approximately $11K. Others I don't know
  156.  
  157.  
  158. > OpenODB (Hewlett-Packard)
  159.  
  160. OpenODB is an advanced object-oriented database management system
  161. (ODBMS) from Hewlett-Packard for your complex commercial application
  162. needs.  With OpenODB, you can take advantage of new object-oriented
  163. features combined with a robust database management system.  This
  164. combination of capabilities is unique in the industry.
  165.  
  166. OpenODB's object-oriented features will help to reduce your development
  167. and maintenance costs by more intuitively representing your business
  168. problems. Also, OpenODB stores code as well as data.  This means that
  169. your application will be simpler and code as well as data can be shared
  170. between multiple users and applications.
  171.  
  172. OpenODB's database management features ensure the integrity, security
  173. and availability of your stored code and data.  At the same time,
  174. OpenODB protects your existing data, applications and training
  175. investment by allowing you to access existing data and applications
  176. using the object-oriented structured query language (OSQL).
  177.  
  178. Hewlett-Packard's OpenODB product uses a client/server architecture, 
  179. enabling you to efficiently utilize your available computing power.  
  180. OpenODB's clients use the programmatic interface to access information on 
  181. the server.
  182.  
  183. OpenODB is composed of the following client and server components:
  184.  
  185. OpenODB Clients
  186.  
  187. o        Interactive Object-Oriented SQL (IOSQL)
  188.          This interface allows you to interactively enter all object-
  189.          oriented SQL (OSQL) statements, facilitating rapid prototyping
  190.          and testing.  IOSQL provides basic query, administration and
  191.          editing capabilities.
  192.  
  193. o        Graphical Browser
  194.          The Graphical Browser is a tool that allows you to graphically
  195.          explore your database schema and contents.  This tool is
  196.          designed to increase the speed of application development by
  197.          making it easier for you to find reusable code stored in
  198.          OpenODB.
  199.  
  200. o        Programmatic Interface
  201.          You can write OpenODB applications using any programming
  202.          language that can be linked with C (C++, COBOL, FORTRAN,
  203.          Pascal).  The programmatic interface uses OSQL statements
  204.          passed as parameters and does not require preprocessors.
  205.  
  206. o        User Applications and Tools
  207.          These are the OpenODB clients you will develop using IOSQL,
  208.          the Graphical Browser and the Programmatic Interface.
  209.  
  210. OpenODB Server Components
  211.  
  212. o        Object Manager
  213.          The Object Manager executes OSQL calls made by the OpenODB
  214.          clients.  The Object Manager processes requests and accesses
  215.          data and code from the internal data storage manager
  216.          (Relational Storage Manager) or passes the request to a
  217.          subsystem outside of OpenODB (External Functions).
  218.  
  219. o        Relational Storage Manager
  220.          OpenODB uses a relational database as its storage manager for
  221.          internally stored data and code.  The relational database
  222.          performs the physical file management and database functions
  223.          such as multiuser concurrency, transaction management, and
  224.          recovery.  Relational database tools are available to help you
  225.          perform online backup and recovery, manage physical
  226.          distribution of files, maximize availability and change
  227.          database parameters.
  228.  
  229. o        External Functions
  230.  
  231.          External functions allow you to access data and code stored
  232.          outside of OpenODB, regardless of data format or location.
  233.          They are implemented by you as subroutines written in general-
  234.          purpose programming languages and compiled outside of OpenODB.
  235.          With external functions, you can encapsulate existing
  236.          applications.  External functions can be called by any OSQL
  237.          statement, allowing you to use this remote data and
  238.          application code like any other object.
  239.  
  240. OpenODB Object Model
  241.  
  242. In OpenODB, the object-oriented model is based upon three components:
  243. objects, types and functions.  These terms are defined as follows in
  244. OpenODB:
  245.  
  246.      Objects are a combination of data and stored code that operate on
  247.      the data.
  248.  
  249.      Types allow you to classify similar objects.
  250.  
  251.      Functions operate on data in the database and also define the
  252.      behavior of that data in the database.  OpenODB supports the
  253.      following three  types of user-defined functions:
  254.  
  255.   *      Stored functions define attributes and relationships that are
  256.          stored in the database.
  257.  
  258.   *      OSQL-based functions define attributes and relationships that
  259.          are  retrieved or calculated with OSQL statements.
  260.  
  261.   *      External functions are a reference to code or data stored
  262.          outside of OpenODB.
  263.  
  264. OpenODB Language
  265.  
  266. You create and manipulate objects, types and functions using OpenODB's
  267. object-oriented structured query language (OSQL).  OSQL is a functional
  268. language that is a semantic superset of SQL, the structured query
  269. language used for relational databases.  OSQL is a complete language
  270. with statements that allow you to define and manipulate your OpenODB
  271. database, specify authorization by individuals or groups, define
  272. transactions, embed program logic within functions, and administer your
  273. database.
  274.  
  275. Using OSQL, you can create the following schema:
  276.  
  277.                            +---------------+
  278. Type                       |   Employee    | Name, Salary, Picture,
  279.                            +---------------+ SalaryDeduction, WorksFor,
  280.                   +----------------|----------------+ DisplayPicture
  281.          +----------------+               +-----------------+
  282. Subtype  |    Manager     | Manages       |    Programmer   | Languages
  283.          +----------------+               +-----------------+
  284.  
  285.                          OpenODB Schema Diagram
  286.  
  287. Creating Types and Functions
  288.  
  289. The first step is to create basic types and functions using the CREATE
  290. TYPE statement, and to create additional functions using the CREATE
  291. FUNCTION statement.  Next, using the simple OSQL statements shown in
  292. Table 2, you can create specific objects.
  293.  
  294.    Create a user-defined type called Employee with three stored
  295.    functions:
  296.  
  297.         CREATE TYPE Employee
  298.           FUNCTIONS (Name CHAR,
  299.                      Salary FLOAT,
  300.                      Picture BINARY);
  301.  
  302.    Create type Programmer, a subtype of Employee. Also define the
  303.    stored function Languages on Programmer:
  304.  
  305.         CREATE TYPE Programmer SUBTYPE OF Employee
  306.           FUNCTIONS (Languages SETTYPE(CHAR));
  307.  
  308.    Create type Manager, a subtype of Employee.  Also define the stored
  309.    function Manages on Manager:
  310.  
  311.         CREATE TYPE Manager SUBTYPE OF Employee
  312.           FUNCTIONS (Manages SETTYPE(Employee));
  313.  
  314.    Create an OSQL-based function SalaryDeduction on Employee:
  315.  
  316.         CREATE FUNCTION SalaryDeduction (Employee e) -> FLOAT AS OSQL
  317.            SELECT (0.3 * Salary (e));
  318.  
  319.    Create an OSQL-based function WorksFor on Employee to define the
  320.    relationship with Manager:
  321.  
  322.         CREATE FUNCTION WorksFor (Employee e) -> Manager AS OSQL
  323.            SELECT mgr
  324.             FOR EACH Manager mgr
  325.             WHERE e IN Manages(mgr);
  326.  
  327.    Create an external function on Employee to display the employee's
  328.    picture:
  329.  
  330.         CREATE FUNCTION DisplayPicture (CHAR Name) -> CHAR AS EXTERNAL
  331.           SIMPLEEXTFUN('DisplayPicture $Name');
  332.  
  333. Creating Objects
  334.  
  335.   Put data into three stored functions defined on the Programmer type:
  336.  
  337.         CREATE OBJECT AS Programmer
  338.          FUNCTIONS (Name, Salary, Languages)
  339.          :bob ('Bob Cox', 55000, SET('PL/1', 'C')),
  340.          :sue ('Sue Smith', 65000, SET('COBOL'));
  341.  
  342.   Put data into three stored functions defined on the Manager type:
  343.         CREATE OBJECT AS Manager
  344.          FUNCTIONS (Name, Salary, Manages)
  345.          :al ('Al Ott', 70000, SET(:bob,:sue)),
  346.          :jim ('Jim Hill', 100000, SET());
  347.  
  348.   Put data into three stored functions using a reference to another
  349.   object:
  350.  
  351.         CREATE OBJECT AS Manager
  352.          FUNCTIONS (Name, Salary, Manages)
  353.          :chris ('Chris Jones', 80000, SET(:al,:jim));
  354.  
  355. SQL-like Queries
  356.  
  357.   Select Bob's salary:
  358.  
  359.         SELECT Salary (:bob);
  360.           Result: 55000
  361.  
  362.   Select the names of the employees that Al manages:
  363.  
  364.         SELECT Name(Manages(:al));
  365.           Results: 'Bob Cox'
  366.                    'Sue Smith'
  367.  
  368.   Select the names of all managers:
  369.  
  370.         SELECT Name (m)
  371.          FOR EACH Manager m;
  372.             Results: 'Al Ott'
  373.                      'Jim Hill'
  374.                      'Chris Jones'
  375.  
  376. NOTE:  The ":" denotes a temporary variable (e.g. :bob) defined in your
  377. application to store a reference to your OpenODB object.
  378.  
  379. Development of New Applications Faster Using OpenODB, you can directly
  380. model your business information in an intuitive way.  You can also
  381. reuse code stored in OpenODB to reduce your application backlog and
  382. improve your productivity.  To help you develop new applications
  383. faster, OpenODB provides the following features:
  384.  
  385. Object Identity Each object stored in OpenODB has a system-provided,
  386. unique handle called an object identifier (OID).  OIDs reduce
  387. duplication of information and relieve you from creating unique keys to
  388. identify stored information in the database.
  389.  
  390. Complex Objects With OpenODB you can construct complex objects from
  391. simpler objects.  Complex objects relieve your application code from
  392. managing the relationships between simple objects.
  393.  
  394. Referential Integrity Since OpenODB has knowledge of the relationships
  395. between objects, it can manage referential integrity on your behalf.
  396. That is, if objects referenced by other objects are deleted, the system
  397. removes all dependencies.  You can specify whether or not to "cascade"
  398. changes or to just delete the immediate dependency.  For instance, if
  399. you delete the Employee 'Bob Cox', the function call
  400. (Name(Manages(:al))) will return just 'Sue Smith'.  The result is a
  401. simplified database schema and simplified application code that can be
  402. developed more quickly since you do not need to manage referential
  403. integrity explicitly.
  404.  
  405. User-defined Data Types In addition to the primitive data types you can
  406. construct user-defined data types in OpenODB rather than in your
  407. application code.  User-defined types give you more flexibility and
  408. lead to more manageable, clearer code.
  409.  
  410. Type Hierarchy Types can be organized in a hierarchy.  This hierarchy
  411. of types and related functions allows you to minimize the translation
  412. from your business model to your OpenODB schema.  The hierarchy also
  413. enables a type to inherit functions defined on "parents", eliminating
  414. duplication of functions.  You will be able to more quickly move from
  415. application design to implementation.
  416.  
  417. Multiple Inheritance Functions defined on a type can be inherited by
  418. one or more subtypes.  By inheriting rather than redefining functions,
  419. you can easily extend the functionality of your application.
  420.  
  421. Overloaded Functions Multiple functions can have the same name with
  422. different implementations.  In your application, all you need to do is
  423. call a function (e.g. Salary). OpenODB will determine which code
  424. (Salary for Employee or Salary for Manager) to execute based upon the
  425. parameter passed at run-time.  As a result, your application code is
  426. simplified since the logic for determining which function to execute is
  427. now in OpenODB.
  428.  
  429. Late Binding OpenODB supports functions that are resolved at run-time.
  430. Late binding allows you more flexibility in application development and
  431. gives you the full power of overloaded functions as described above.
  432. Late binding also shields your applications from changes to functions
  433. since these changes can be made online and the new function definition
  434. resolved at run-time.
  435.  
  436. Reduced Maintenance Costs OpenODB allows you to add new functionality
  437. and make schema changes to your OpenODB database at run-time, often
  438. without changing your application code or even stopping the database
  439. system.  The following OpenODB features will help reduce your
  440. maintenance costs:
  441.  
  442. Dynamic Schema Modification You can create new functions and types in
  443. OpenODB at runtime.  You can also change the implementation of
  444. functions without having to recompile your applications.
  445.  
  446. Dynamic Typing You can dynamically change the type of an object without
  447. having to destroy and recreate the object.  This is possible because an
  448. object can belong to more that one type.
  449.  
  450. Encapsulation OpenODB supports the combination of data and user-defined
  451. functions.  Since OpenODB only allows access to your data through these
  452. functions, your application is protected from changes to the function
  453. implementation and you have control over how users access information
  454. in OpenODB.  Encapsulation allows you to modify the function body
  455. without changing your application code.
  456.  
  457. Procedural Language OSQL includes programming flow statements,
  458. including IF/THEN/ELSE, FOR and WHILE.  The procedural language allows
  459. OpenODB functions to be quite complex, simplifying your application
  460. code.  By moving application code into the database, you can now share
  461. the code and get all of the benefits of sharing data, such as
  462. consistency, security and integrity.
  463.  
  464. For example...
  465.  
  466. Create a Procedure
  467.  
  468.   Convert all managers to programmers that have less than a specified
  469.   number of employees:
  470.  
  471.    CREATE FUNCTION MgrToEng (INTEGER minemps) -> BOOLEAN
  472.      AS OSQL
  473.         BEGIN
  474.           FOR m IN Manager DO
  475.              IF (COUNT(Manager (m)) < minemps)
  476.              THEN
  477.                 BEGIN
  478.                   ADD TYPE Programmer TO m;
  479.                   REMOVE TYPE Manager FROM m;
  480.                 END
  481.              ENDIF;
  482.          END;
  483.  
  484. Executing a Procedure
  485.  
  486. Applications are simplified since the implementation of functions can
  487. now be stored in OpenODB.  Simply call a function, passing a parameter:
  488.  
  489.   CALL MgrToEng(3);
  490.  
  491. Protection of Existing Investments OpenODB coexists with your current
  492. data and applications, allowing you to build upon existing
  493. functionality.  Also, OpenODB's object-oriented SQL (OSQL) is easy to
  494. learn if you already know Structured Query Language (SQL).
  495.  
  496. External Functions Using external functions, you can access distributed
  497. data and code stored outside of OpenODB, regardless of data format or
  498. location.  This simplified view of your enterprise allows you to more
  499. easily develop complex applications that integrate your existing data
  500. and applications.  For instance, you can develop an OpenODB application
  501. that accesses data stored in other databases (e.g. ALLBASE/SQL,
  502. TurboImage or DB2) as well as in flat files.  OpenODB acts as an
  503. integrator so that your application just needs to know OSQL.  OSQL
  504. statements may actually call functions that access data and encapsulate
  505. code stored outside of OpenODB.
  506.  
  507. OSQL If you already know SQL, you can quickly be productive using
  508. OpenODB's OSQL. OSQL uses syntax that is similar to SQL, the semantics
  509. are a superset of SQL, and both query languages are set-based, that is
  510. they retrieve sets of information based upon queries, as shown in
  511. earlier examples.
  512.  
  513. Optimize Performance and Availability OpenODB, with the help of the
  514. underlying relational storage manager, gives you flexibility in
  515. managing the performance of your system and maximizing the availability
  516. of information for your users.
  517.  
  518. High Availability
  519. OpenODB maximizes the availability of your information by providing:
  520. * dual logging, to ensure the integrity of your log file
  521. * switch log, to automatically switch to a second log file if the
  522.   original log file is damaged or becomes full
  523. * dynamic file expansion, to automatically expand the size of your
  524.   system file if it becomes full
  525. * online backup of the database, to backup the database while it is
  526.   being accessed OpenODB will also take advantage of available system
  527.   features such as disc mirroring.
  528.  
  529. Multiuser Concurrency Control OpenODB is designed to support hundreds
  530. of users accessing the same information while guaranteeing the
  531. integrity of that information.
  532.  
  533. Compiled Functions To improve runtime performance, functions are
  534. compiled and can be cached.
  535.  
  536. Access Methods on Stored Data Indexes are automatically defined on
  537. object identifiers (OIDs) for you when you create types and functions.
  538. These indexes help provide quick access to information stored in your
  539. OpenODB ODBMS.  You can also define your own indexes.
  540.  
  541. Clustering Related functions can be stored close to each other in order
  542. to improve performance.
  543.  
  544. Additional Features
  545.  
  546. Authorization You can control access to OpenODB at the database and
  547. function levels based on individuals or a group of users. Authorization
  548. statements provide you a flexible way to control access to types and
  549. functions in OpenODB.
  550.  
  551. Client/Server Architecture Clients communicate with the OpenODB server
  552. over a network.  The interface between the clients and the server is
  553. transparent to you as a user.  The clients and server can also reside
  554. on the same machine.
  555.  
  556. Multimedia OpenODB allows you to store large, unformatted data in
  557. binary format.  Some examples include graphics, images or voice.  You
  558. can also define functions in OpenODB to manipulate this multimedia
  559. information.  For example, you can store a picture as well as the
  560. function to display the picture.
  561.  
  562. Native Language Support You can store 8-bit and 16-bit character data
  563. in OpenODB.
  564.  
  565. Persistent Data and Code OpenODB allows you to save data as well as
  566. code between application sessions.
  567.  
  568. Primitive Data Types OpenODB supports a number of primitive data types,
  569. shown in the OpenODB Feature Summary below.  You can also create your
  570. own user-defined data types.
  571.  
  572. Recovery OpenODB has a robust logging and recovery facility.  In case
  573. of a failure, OpenODB can handle rollback or rollforward recovery to a
  574. particular time, using your log file to recreate saved work.
  575.  
  576. Transaction Management OpenODB ensures the logical and physical
  577. integrity of your database by giving you complete control over the unit
  578. of work to be performed within a single transaction.  With this
  579. control, you can save or rollback a transaction (throw away temporary
  580. work) at your discretion.  Savepoints are supported so that you can
  581. rollback parts of a transaction.
  582.  
  583. System Environment The OpenODB server and all clients are available on
  584. HP-UX 8.0 or later versions for the HP9000 Series 300/400/700/800
  585. systems and for MPE XL 4.0 or later versions for the HP3000 Series 900
  586. systems.  Client software will also be supported using X terminals.
  587. You will need 16 Mbytes of main memory (32 Mbytes recommended), at
  588. least 15 Mbytes disc space for installation and approximately 10 Mbytes
  589. DISC space for each new OpenODB database.
  590.  
  591. Software Requirements To use OpenODB, you need to have a TCP/IP
  592. transport and ARPA Berkeley Services.  To use the OpenODB Graphical
  593. Browser, you need to have X-Window X11.
  594.  
  595. Ordering Information The software includes:  OpenODB clients (IOSQL,
  596. Graphical Browser, Programmatic Interface) and the 1-8 user license for
  597. the OpenODB server (Object Manager, Runtime ALLBASE/SQL and External
  598. Functions).  You must specify a media option for the HP9000 systems.
  599.  
  600.          Product Number  Product Description
  601.          B2466A          OpenODB Developer Release for HP9000 S300/S400
  602.          B2468A          OpenODB Developer Release for HP9000 S700
  603.          B2470A          OpenODB Developer Release for HP9000 S800
  604.          B2472A          OpenODB Developer Release for HP3000 S900
  605.  
  606. Documentation, Online Support, Training and Consulting The OpenODB
  607. Developer Release includes documentation for all systems.  The OpenODB
  608. Developer Release also includes online support, training and
  609. consulting.   These services will be arranged when you place an order
  610. for the product.
  611.  
  612. OBJECT-ORIENTED FEATURES                 CLIENT INTERFACES
  613. Complex Objects                          Interactive OSQL
  614. Dynamic Schema Modification              Graphical Browser
  615. Dynamic Typing                           Programmatic Interfaces: C
  616. Encapsulation                            linkable languages (C++,
  617. External Functions                       COBOL, FORTRAN, Pascal)
  618. Functions (Stored Code or Methods)
  619. Late Binding                             OSQL STATEMENTS
  620. Multiple Inheritance                     Add/Remove Type To/From Object
  621. Object Identity (OID)                    Add/Remove User
  622. Overloaded Functions                     Call Function
  623. Type (Class) Hierarchy                   Change Password
  624. User-defined Data Types                  Create/Delete Function
  625.                                          Create/Delete Object
  626. DBMS FEATURES                            Create/Delete Type
  627. Access Methods on Stored Data            Create/Delete User/Group
  628. Authorization (Security)                 Grant/Revoke
  629. Client/Server                            If/Then/Else, While, For
  630. Clustering                               Implement Function
  631. Compiled Function                        Open/Fetch/Close Cursor
  632. Declarative Query Language (OSQL)        Select
  633. High Availability                        Update
  634. Multimedia
  635. Multiuser Concurrency Control            PRIMITIVE DATA TYPES
  636. Native Language Support                  Binary
  637. Persistence                              Boolean
  638. Primitive Data Types                     Character
  639. Procedural Language                      Date
  640. Recovery                                 Datetime
  641. Referential Integrity                    Decimal
  642. Transaction Management                   Floating Point
  643.                                          Integer
  644.                                          Interval
  645.                                          Long Binary (Large)
  646.                                          Small Integer
  647.                                          Time
  648.  
  649.                             OpenODB Feature Summary 
  650.  
  651.  
  652.  
  653. HP OpenODB Price Guide
  654.  
  655. SUMMARY:
  656.  
  657.    Description                        U.S. List Price
  658.  
  659. 1. Developer's Bundle                         $105,000
  660. 2. Evaluator's Bundle                           $5,000
  661. 3. Learning Version                            $10,000
  662. 4. Training Course                       $2,500/person
  663. 5. Consulting                      $3,500/day or Quote
  664. 6. Reference Manual                               $250
  665.  
  666. DETAILED DESCRIPTION:
  667.  
  668. 1. Developer's Bundle
  669.  
  670. Contents:
  671. A) OpenODB software (1-64 User License for 1 Server Platform)
  672. B) OpenODB documentation
  673. C) 5 passes to the OpenODB Training Course
  674. D) 5 days of on-site consulting
  675. E) Phone and software update support for 6 months
  676.  
  677. U.S. List Price: $105,000/bundle
  678.  
  679. Product Numbers:
  680. B2472A (for HP 3000 Series 900 with MPE/iX)
  681.  
  682. B2468A (for HP 9000 Series 700 with HP-UX)
  683.  
  684. B2470A (for HP 9000 Series 800 with HP-UX)
  685.  
  686. Notes:
  687. A) OpenODB documentation includes the OpenODB Reference Manual, ALLBASE/SQL
  688.    Handbook of DBA Tasks, and Up and Running with ALLBASE/SQL.
  689. B) The OpenODB Training Course is delivered in Cupertino, California and takes
  690.    4 days.
  691. C) Consulting is provided at the customer's site with a maximum of two trips.
  692. D) Phone support is provided directly from the HP OpenODB factory consulting
  693.    team in Cupertino, California.  Phone and software update support can be
  694.    purchased at the end of the first 6 months at the rate of $6,900 per year.
  695. E) Volume End User (VEU) and Educational discounts apply to the entire list
  696.    price.
  697. F) The Developer's Bundle is available on HP 3000 Series 900 or HP 9000 Series
  698.    700 and 800 computers.
  699.  
  700.  
  701. 2. Evaluator's Bundle
  702.  
  703. Contents:
  704. A) 3 months use of OpenODB software (1-64 User License for 1 Server Platform)
  705. B) OpenODB documentation
  706. C) 1 pass to the OpenODB Training Course
  707. D) Phone support for 3 months
  708.  
  709. U.S. List Price:  $5,000/bundle
  710.  
  711. Product Numbers:
  712. B3178A (for HP 9000 Series 700 with HP-UX)
  713.  
  714. B3179A (for HP 9000 Series 800 with HP-UX)
  715.  
  716. Notes:
  717. A) The OpenODB software is shipped when the product is ordered.  The OpenODB
  718.    software will stop running 3 months after it is installed.
  719. B) OpenODB documentation includes the OpenODB Reference Manual, ALLBASE/SQL
  720.    Handbook of DBA Tasks, and Up and Running with ALLBASE/SQL.
  721. C) The OpenODB Training Course is delivered in Cupertino, California and takes
  722.    4 days.
  723. D) Phone support is provided directly from the HP OpenODB factory consulting
  724.    team in Cupertino, California.
  725. E) Volume End User and Educational discounts apply to the entire list price.
  726. F) The Evaluator's Bundle is only available on HP 9000 Series 700 or 800
  727.    computers.
  728.  
  729. 3. Learning Version
  730.  
  731. Contents:
  732. A) OpenODB learning version software (Single User License for 1 Platform)
  733. B) OpenODB documentation
  734.  
  735. U.S. List Price:  $10,000/license
  736.  
  737. Product Numbers:
  738. B3181A (for HP 9000 Series 700 with HP-UX)
  739.  
  740. B3182A (for HP 9000 Series 800 with HP-UX)
  741.  
  742. Notes:
  743. A) This special single user version is intended for students, researchers, and
  744.    technical evaluators who wish to learn about the Object-oriented SQL (OSQL)
  745.    interface language and OpenODB product.  The learning version software runs
  746.    on one computer for one user application (i.e. no client/server mode).
  747. B) OpenODB documentation includes the OpenODB Reference Manual, ALLBASE/SQL
  748.    Handbook of DBA Tasks, and Up and Running with ALLBASE/SQL.
  749. C) Volume End User and Educational discounts apply to the list price.
  750. D) The Learning Version is available on HP 9000 Series 700 and 800 computers.
  751. E) Phone and software update support for the Learning Version can be
  752.    purchased at the rate of $1,500 per year.
  753.  
  754.  
  755. 4. OpenODB Training Course
  756.  
  757. Contents:
  758. A) 1 pass to the OpenODB Training Course
  759. B) OpenODB documentation
  760. C) Class notes and OSQL case study examples
  761.  
  762. U.S. List Price:  $2,500/person
  763.  
  764. Product Number:
  765. B3184A
  766.  
  767. Notes:
  768. A) The OpenODB Training Course is delivered in Cupertino, California and takes
  769.    4 days.
  770. B) OpenODB documentation includes the OpenODB Reference Manual, ALLBASE/SQL
  771.    Handbook of DBA Tasks, and Up and Running with ALLBASE/SQL.
  772. C) The OpenODB Training Course includes hands on experience with the OpenODB
  773.    software through a case study approach.
  774. D) No standard discounts apply.
  775.  
  776.  
  777. 5. OpenODB Consulting
  778.  
  779. Contents:
  780. A) 1 person on the customer's site for technical consulting
  781.  
  782. U.S. List Price:  $3,500/day + zone charge/trip
  783.  
  784. Product Number:
  785. B3186A
  786.  
  787. Notes:
  788. A) For details about this consulting, see the OpenODB Consulting Fact Sheet.
  789. B) The zone charges per trip are: $1000 in North America, $2000 in Europe,
  790.    and $3000 in the Far East and South America.
  791.  
  792.    Consulting that does not require travel will not have a zone charge.
  793. C) Special quotes are available for projects longer than one week.
  794. D) No standard discounts apply.
  795.  
  796.  
  797. 6. OpenODB Reference Manual
  798.  
  799. Contents:
  800. A) OpenODB Reference Manual
  801. B) The right to make up to 5 additional copies of the OpenODB Reference Manual
  802.    for internal use only.
  803.  
  804. U.S. List Price:  $250/manual & right to copy
  805.  
  806. Product Number:    B3185A
  807.  
  808. Notes:
  809. A) No standard discounts apply
  810.  
  811. Mark Boronkay
  812. OpenODB Consultant
  813. boronkay@cup.hp.com
  814.  
  815.  
  816.  
  817. > POET <Persistent Objects and Extended Database Technology>  (BKS Software)
  818.  
  819. C++ Language Support
  820.  
  821. o    tight semantic integration with C++
  822. o    any C++ object or structure can be made persistent by adding the 
  823.      persistent keyword
  824. o    storing and reading a C++ object does not change its state or behavior
  825. o    full support for C++ encapsulation, object identity,  inheritance, and 
  826.      polymorphy
  827. o    C++ pointers and references are automatically converted to database 
  828.      references when storing objects
  829. o    database references are automatically converted to C++ pointers and 
  830.      references when reading objects
  831. o    all database definition is done through a small extension to C++ 
  832.      declaration syntax
  833.  
  834. Database Functionality
  835. navigation, queries, sorting, indexes, single-user operation, multi-user
  836. operation using client/server architecture, flexible locking for objects
  837. and sets, nested transactions, watch & notify for objects and sets,
  838. event handling, database size limited only by hard disk size
  839.  
  840. C++ Language Extensions
  841. persistence, indexes, transient data elements in persistent classes, sets,
  842. dependent objects
  843.  
  844. PTXX-Precompiler
  845. automatically converts extended C++ class declarations into ANSI 2.0 code,
  846. registers classes in the class dictionary, provides class versioning
  847.  
  848. Predefined C++ Classes
  849. date, time, strings, and BLOBS (binary large objects)
  850.  
  851. Portability
  852. all platforms are source-code compatible, any POET database may be read by
  853. any computer full support for heterogeneous networks
  854.  
  855. Platforms
  856. Available for MS-DOS / MS-Windows (Borland C++, Microsoft), 
  857. OS/2 (Borland C++), Novell, Macintosh MPW, and various Unix 
  858. systems, including NeXT (NeXTStep) and Sun OS (Sun C++).
  859.  
  860. How to Contact Us:
  861. BKS has offices in Santa Clara, Hamburg, and Berlin.  Silicon 
  862. River, Limited, is responsible for POET in the United Kingdom.  
  863.  
  864. Santa Clara:    (North America, Australia, Asia)
  865.  
  866. BKS Software
  867. 4633 Old Ironsides Drive  Suite 110
  868. Santa Clara, CA 95054
  869. Phone:  408 / 748 - 3403
  870. Fax:    408 / 748 - 9060
  871.  
  872. Contact Person: jrobie@netmbx.netmbx.de (Jonathan Robie)
  873.  
  874.  
  875. > Statice (Symbolics)
  876.  
  877. From: fischerm@darmstadt.gmd.de (Markus Fischer)
  878. Newsgroups: comp.databases.object,comp.lang.lisp
  879. Subject: Statice now runs on Unix
  880. Date: 15 Jun 93 14:55:48 GMT
  881.  
  882. Hi there,
  883.  
  884. since I've never seen 'Symbolics' or 'Statice' in
  885. comp.database.object, this might be interesting:
  886.  
  887. A few days ago, Symbolics announced the availability of a beta-
  888. release of their ODBMS 'Statice' on Unix platforms. It is quite
  889. powerful and tightly integrated within Common Lisp.
  890. Currently, Symbolics and LUCID are supported.
  891. People (like me) used to Symbolics' Genera development environment 
  892. can continue to use Statice there (where it has been already
  893. successfully employed in 'real world' applications)
  894. and now also use it on Unix Workstations.  (Those are the cheaper
  895. boxes, I guess). Both kinds of platforms can be freely intermixed
  896. in a network.
  897.  
  898. Statice is based on standards of Lisp: CLOS and CLIM 
  899. (Common Lisp Object System, resp. Common Lisp Interface Manager)
  900.  
  901. Here's the address of Symbolics in Germany; they're mostly 
  902. responsible for Statice on Unix:
  903.  
  904. Symbolics Systemhaus GmbH
  905. Mergenthalerallee 77
  906. 6236 Eschborn (til June 31)
  907. 65760 Eschborn (from July 1)
  908. Tel. (49) 6196-47220, Fax (49) 6196-481116
  909.  
  910. Contact person is Dr. Thomas Neumann (TN@symbolics.de).
  911.  
  912. Also:
  913.  
  914. "Update Database Schema" brings an existing database into conformance
  915. with a modified schema.  Changes are classified as either compatible
  916. (lossless, i.e., completely information-preserving) or incompatible
  917. (i.e., potentially information-losing in the current implementation).
  918. Basically, any change is compatible except for the following:
  919.  
  920.     -- If an attribute's type changes, all such attributes extant
  921.     are re-initialized (nulled out).  Note that Statice permits
  922.     an attribute to be of type T, the universal type.  Such an
  923.     attribute can then take on any value without schema
  924.     modification or information loss.
  925.  
  926.     -- If a type's inheritance (list of parents) changes, the
  927.     type must be deleted and re-created, losing all extant
  928.     instances of that type. This is Statice's most serious
  929.     current limitation.  The simplest workaround is to employ a
  930.     database dumper/loader (either the one supplied by Symbolics
  931.     or a customized one) to save the information elements and
  932.     then reload them into the modified schema.
  933.  
  934. [Lawrence G Mayka <lgm@IExist.ATT.COM>]
  935.  
  936.  
  937. > UniSQL
  938.  
  939. UniSQL offers a state-of-the-art suite of integrated object-oriented database
  940. systems and application development products which can be used separately or
  941. together to support complex development projects which use object-oriented
  942. development techniques, integrate sophisticated multimedia data, and require
  943. true multidatabase access to relational and object-oriented databases. The
  944. UniSQL product suite includes:
  945.  
  946.         UniSQL/X Database Management System;
  947.         UniSQL/M Multidatabase System; and
  948.         UniSQL/4GE Application Development Environment
  949.         User interfaces include: C++, C, Object SQL, SmallTalk, and ODBC
  950.         Database interfaces include: Ingres, Oracle, Sybase, UniSQL/X, and EDA/SQL
  951.  
  952. UniSQL offers:
  953.  
  954. - A wide selection of user interfaces including C++, SmallTalk, C, Microsoft's
  955.   ODBC, both embedded (static and dynamic) and interactive Object SQL, and UniSQL
  956.   and 3rd-party development tools.
  957.  
  958. - Mission-critical database features such as a high-level query language
  959.   (SQL/X), cost-based query optimization, automatic transaction management,
  960.   automatic concurrency control, dynamic schema evolution, dynamic authorization,
  961.   physical disk structuring options, and installation tuning parameters.
  962.  
  963. - The UniSQL Multimedia Framework which provides natural and uniform database
  964.   system support for all types of large unstructured data objects. The Multimedia
  965.   Framework also provides for seamless integration of multimedia devices such as
  966.   fax machines, CD jukeboxes, satellite feeds, image compression boards, etc.
  967.  
  968. - The UniSQL/M Multidatabase System enables developers to manage a collection
  969.   of multi-vendor databases -- Ingres, Oracle, Sybase, DB2, UniSQL/X, and others
  970.   -- as a single federated database system with full object-oriented
  971.   capabilities.
  972.  
  973. UniSQL has well over 150 customers around the world, the majority of which are
  974. using UniSQL database products for mission-critical applications which require
  975. object-oriented, multimedia, post-relational, and heterogeneous database
  976. capabilities.
  977.  
  978. A typical UniSQL customer is a Fortune 500 company, a commercial software
  979. developer, or government organization that is using UniSQL database products
  980. to:
  981.  
  982. - support mission-critical application development projects which are being
  983.   developed using object-oriented programming languages and development
  984.   techniques,
  985.  
  986. - support applications which must integrate many different types of corporate
  987.   data -- text and documents, tabular data, images and audio, engineering
  988.   drawings, GIS data, procedural data (programs), etc. -- into a single
  989.   application context.
  990.  
  991. - support the full object-oriented development paradigm using existing
  992.   relational database systems such as Ingres, Oracle, Sybase, and DB2.
  993.  
  994. - logically integrate one or more relational and object-oriented databases to
  995.   form a single, homogenized database server which supports both relational and
  996.   object-oriented facilities.
  997.  
  998. In September 1992, UniSQL was selected by the Petrotechnical Open Software
  999. Corporation (POSC) -- over more than 25 other industry vendors -- to provide
  1000. database technology which is being used by POSC in their development of a new
  1001. data management specification for the oil & gas industry. Also during 1992,
  1002. because of its powerful multimedia capabilities, UniSQL was selected by the MIT
  1003. AthenaMuse Consortium on multimedia as the consortium's multimedia database
  1004. system.
  1005.  
  1006. During the DB/EXPO '93 Conference and Exhibition, UniSQL was chosen in
  1007. competition with major industry database vendors as a finalist in the
  1008. ``RealWare Awards''.  The ``RealWare Awards'' honor companies that have
  1009. had a major impact in the user community.
  1010.  
  1011. UniSQL was founded in May 1990 by Dr. Won Kim, President and CEO, delivering
  1012. the UniSQL/X DBMS in March of 1992. With its world-class database research and
  1013. architectural team, UniSQL has perfected what the database industry has sought
  1014. since the mid-1980s: a fully object-oriented data model that is a natural
  1015. conceptual outgrowth of the popular relational model. Both the UniSQL/X DBMS
  1016. and the UniSQL/M Multidatabase System represent the first of a powerful new
  1017. generation of client-server database systems that support the full
  1018. object-oriented paradigm yet retain all of the strengths and capabilities of
  1019. relational database systems including support for ANSI-standard SQL.
  1020.  
  1021. UniSQL currently has 45 employees and is privately owned and managed by Dr.
  1022. Kim. The company has secured long-term funding from NTT Data Communications
  1023. Systems Corp. (NTT Data), a $2 billion company, which is Japan's foremost
  1024. systems integrator and UniSQL's exclusive distributor in Japan.
  1025.  
  1026. For more information, contact:
  1027.  
  1028.         UniSQL, Inc.
  1029.         9390 Research Blvd., II-200
  1030.         Austin, Texas 78759-6544
  1031.         Tel.: 512/343-7297
  1032.         Tollfree: 800/451-DBMS
  1033.         Fax.: 512/343-7383
  1034.  
  1035. And:
  1036. From: jonh@unisql.UUCP (Jon Higby)
  1037. Newsgroups: comp.databases,comp.databases.theory,comp.databases.object,comp.object
  1038. Subject: Re: SQL3, Itasca, & UniSQL/X
  1039. Message-ID: <6143@unisql.UUCP>
  1040. Date: 10 Sep 93 14:26:04 GMT
  1041. References: <CD1Ln5.9G3@dcs.glasgow.ac.uk>
  1042. Organization: UniSQL, Inc., Austin, Texas, USA
  1043.  
  1044. >>...
  1045. For UniSQL/X, feel free to contact me (email, snail-mail or phone).
  1046.  
  1047. UniSQL/X is a SQL compliant database with Object Oriented extensions
  1048. (classes, inheritance, methods, etc).  We have an information packet
  1049. available which includes a white-paper on our OORDMS approach.
  1050.  
  1051. Jon Higby
  1052. Technical Services Consultant
  1053.  
  1054. UniSQL, Inc.
  1055. 9390 Research II, Suite 200
  1056. Austin, Texas  78759-6544
  1057. (512) 343-7297
  1058.  
  1059. *****************************************************************************
  1060. Standard disclaimer ... All opinions expressed are my own and not of my 
  1061.                         employer.......................................
  1062. *****************************************************************************
  1063.  
  1064.  
  1065.  
  1066. > Versant (Versant Object Technology)
  1067.  
  1068. Versant is a client/server object database management system (ODBMS) targeted at
  1069. distributed, multi-user applications.  Versant runs on UNIX and PC platforms, 
  1070. including Sun, IBM, HP, DEC, SGI, Sequent, OS/2, with support for Windows NT is 
  1071. planned during 1993.
  1072.  
  1073. Versant provides transparent language interfaces from object-oriented 
  1074. programming languages such as C++ and Smalltalk.  Versant also supports a C API.
  1075.  
  1076. Versant is built with an object-level architecture, which means that operations 
  1077. are generally performed on the object (or group thereof) level.  Key Versant 
  1078. features include:
  1079.  
  1080.  Performance
  1081.  -----------
  1082.  
  1083. *  Object-level locking for fine granularity concurrency control
  1084. *  Server-based query processing to reduce network I/O
  1085. *  Dual caching to speed warm traversals
  1086. *  Dynamic space reclamation and reuse
  1087.  
  1088.  Distribution
  1089.  ------------
  1090.  
  1091. *  Immutable, logical object identifiers for data integrity
  1092. *  Object migration (transparent relocation across nodes)
  1093. *  Transparent cross-node references (distributed db)
  1094. *  Automatic two-phase commit
  1095.  
  1096.  Other
  1097.  -----
  1098.  
  1099. *  Schema evolution (online via lazy updates)
  1100. *  Standard workgroup features (e.g., versioning, checkin/out)
  1101. *  Detachable, personal databases
  1102. *  DBA utilities
  1103.  
  1104.  
  1105. Additional information available from
  1106.  
  1107. info@versant.com  (General information)
  1108. davek@versant.com (Dave Kellogg)
  1109.  
  1110. Versant Object Technology 
  1111. 1380 Willow Road
  1112. Menlo Park, California  94025
  1113.  
  1114. 415-329-7500 phone.
  1115. 415-325-2380 fax.
  1116.  
  1117.  
  1118. On Schema Evolution (from original survey):
  1119. We support run-time schema evolution.  It uses a lazy scheme, so
  1120. schema operations are very fast.  Objects on disk may have an older
  1121. `storage class' and they will be updated to the new schema when they
  1122. are used.
  1123.  
  1124. In older releases schema evolution was allowed only on leaf classes
  1125. (those with no subclasses).  In our new release 2 (going to beta test
  1126. soon) you can do schema evolution on any class.
  1127.  
  1128. In the future we're working on more general view mechanisms so you can
  1129. see a subset of the attributes in memory, or some more complicated
  1130. transformation.  This goes together with support for multiple
  1131. compilers and multiple languages.
  1132.  
  1133. [Joe Keane <osc!jgk@amd.com>]
  1134.  
  1135. Also: 1-800-Versant
  1136.  
  1137.  
  1138.  
  1139.  
  1140. Other Models
  1141. ------------
  1142.  
  1143. Research Systems
  1144. ________________
  1145.  
  1146. > GRAS
  1147.  
  1148. --------------------------------------------------------------
  1149. GRAS - A Graph-Oriented Database System for SE Applications
  1150. Copyright (C) 1987-1993  Lehrstuhl Informatik III, RWTH Aachen
  1151. --------------------------------------------------------------
  1152.  
  1153. See the GNU Library General Public License for copyright details.
  1154.  
  1155. Contact Adresses:
  1156.  
  1157.     Dr. Andy Schuerr 
  1158.     Lehrstuhl fuer Informatik III,
  1159.     University of Technology Aachen (RWTH Aachen),
  1160.     Ahornstr. 55,
  1161.     D-5100 Aachen
  1162.  
  1163. Email to
  1164.  
  1165.     andy@i3.informatik.rwth-aachen.de
  1166.  
  1167. GRAS is a database system which has been designed according
  1168. to the requirements resulting from software engineering
  1169. applications. Software development environments are composed
  1170. of tools which operate on complex, highly structured data.
  1171. In order to model such data in a natural way, we have selected
  1172. attributed graphs as GRAS' underlying data model.
  1173.  
  1174. A first prototype of the GRAS (GRAph Storage) system - described
  1175. in /BL 85/ - was already realized in 1985. Since this time
  1176. gradually improving versions of the system have been used at
  1177. different sites within the software engineering projects
  1178. IPSEN /Na 90/, Rigi /MK 88/, MERLIN /DG 90/, and CADDY /EHH 89/.
  1179. Based on these experiences, almost all parts of the original
  1180. prototype have been redesigned and reimplemented.
  1181.  
  1182. Thus, nowadays a stable and efficiently working single-process
  1183. version of the system GRAS with interfaces for the programming
  1184. languages Modula-2 and C is available as free software for Sun
  1185. workstations (the GRAS system itself is implemented in Modula-2
  1186. and consists of many layers which might be reusable for the
  1187. implementation of other systems):
  1188.  
  1189.   Via anonymous ftp from ftp.informatik.rwth-aachen.de
  1190.   in directory /pub/unix/GRAS in file gras.<version-no>.tar.Z.
  1191.  
  1192.   There are several files containing documentation, sources, binaries,
  1193.   application examples, and libraries. All binaries are for Sun/4
  1194.   machines. Sun/3 binaries are shipped only if explicitly requested.
  1195.  
  1196.   You have to use the following sequence of operations for installing
  1197.   the GRAS system at your site:
  1198.  
  1199.   1) 'ftp ftp.informatik.rwth-aachen.de' (with login name "anonymous"
  1200.      and password equal to your mail address).
  1201.   2) 'cd pub/unix/GRAS' (for changing the current directory).
  1202.   3) 'binary' (command for changing ftp mode).
  1203.   4) 'get gras.<version-no.>' (use 'ls' for finding the currently used
  1204.       GRAS version nr.).
  1205.   5) 'bye' (for exiting ftp).
  1206.   6) 'uncompress gras.<version-no>.tar'.
  1207.   7) 'tar xvf gras.<version-no>.tar' (creates a subdirectory GRAS_2 for
  1208.      the Modula-2 implementation of GRAS including its C-interface).
  1209.   8) Follow the instructions in file GRAS_2/README.
  1210.  
  1211.  
  1212. The current version has programming interfaces for Modula-2 and C
  1213. and supports:
  1214.  
  1215.   - the manipulation of persistent attributed, directed node- and
  1216.     edge-labeled graphs (including the creation of very long
  1217.     attributes and of attribute indexes).
  1218.  
  1219.   - the manipulation of temporary/volatile generic sets/relations/lists,
  1220.  
  1221.   - the coordination of graph accesses by different GRAS applications
  1222.     (multiple-read/single-write access with graphs as lock units),
  1223.  
  1224.   - error recovery based on shadow pages and forward logs,
  1225.  
  1226.   - nested transactions and linear undo/redo of arbitrarily long
  1227.     sequences of already committed graph modifying operations based
  1228.     on forward and backward logs,
  1229.  
  1230.   - event-handling (with certain kinds of graph-modifications
  1231.     as events and graph-modifying transactions as event-handlers),
  1232.  
  1233.   - primitives for version control comprising the capability
  1234.     for efficiently storing graphs as forward/backward deltas to
  1235.     other graphs,
  1236.  
  1237.   - and primitives for declaring graph schemes and for incremental
  1238.     evaluation of derived attributes.
  1239.  
  1240. Furthermore, tools for (un-)compressing graphs and a X11R5-based
  1241. graph browser are part of this release.
  1242.  
  1243. A multi-process version of the system GRAS supporting the inter-
  1244. action of multiple client and multiple server processes within
  1245. one local area network is nearby completion (version 6.0/0).
  1246.  
  1247. Thus, the GRAS system may be considered to be the core of a graph
  1248. oriented DBMS environment. The development of such an environment
  1249. based on a very high-level specifications language named PROGRES
  1250. is under way (the underlying calculus of this specifcation language
  1251. are so-called PROgrammed GRaph REwriting Systems).
  1252.  
  1253. This environment will comprise the following tools (a prerelease
  1254. of this environment might be made available upon request):
  1255.  
  1256.   - a syntax-directed editor for graph schemes, graph rewrite rules,
  1257.     and sequences of graph rewrite rules,
  1258.  
  1259.   - an incrementally working consistency checker,
  1260.  
  1261.   - an incrementally working compiler&interpreter translating
  1262.     PROGRES specifications into sequences of GRAS procedure
  1263.     calls (for C as well as for Modula-2),
  1264.  
  1265.   - and an "enhanced" graph (scheme) browser.
  1266.  
  1267.  
  1268. References
  1269. ----------
  1270.  
  1271. Refer to the following publications for further info about GRAS, PROGRES,
  1272. and related topics:
  1273.  
  1274. /BL85/          Brandes, Lewerentz: A Non-Standard Data Base System within
  1275.                 a Software Development Environment. In Proc. of the Workshop
  1276.                 on Software Engineering Environments for Programming-in-the-
  1277.                 Large, pp 113-121, Cape Cod, June 1985
  1278.  
  1279. /DHKPRS90/      Dewal, Hormann, Kelter, Platz, Roschewski, Schoepe: Evaluation
  1280.                 of Object Management Systems. Memorandum 44, University
  1281.                 Dortmund, March 1990
  1282.  
  1283. /Feye92/    Feye A.: Compilation of Path Expressions (in German), Diploma
  1284.         Thesis, RWTH Aachen (1992)
  1285.  
  1286. /Hoefer92/    Hoefer F.: Incremental Attribute Evaluation for Graphs (in
  1287.         German), Diploma Thesis, RWTH Aachen (1992)
  1288.  
  1289. /HPRS90/        Hormann, Platz, Roschweski, Schoepe: The Hypermodel Benchmark,
  1290.                 Description, Execution and Results. Memorandum 53, University
  1291.                 Dortmund, September 1990
  1292.  
  1293. /KSW92/ *       Kiesel, Schuerr, Westfechtel: GRAS, A Graph-Oriented Database
  1294.                 System for (Software) Engineering Applications. Proc. CASE 93,
  1295.         Lee, Reid, Jarzabek (eds.): Proc. CASE '93, 6th Int. Conf. on
  1296.         Computer-Aided Software Engineering, IEEE Computer Society
  1297.         Press (1993), pp 272-286
  1298.         Also:  Technical Report AIB 92-44, 
  1299.  
  1300. /Klein92/    Klein P.: The PROGRES Graph Code Machine (in German), Diploma
  1301.         Thesis, RWTH Aachen (1992)
  1302.  
  1303. /Kossing92/    Kossing P.: Modelling of Abstract Syntax Graphs for normalized
  1304.         EBNFs (in German), Diploma Thesis, RWTH Aachen (1992)
  1305.  
  1306. /LS88/          Lewerentz, Schuerr: GRAS, a Management System for Graph-
  1307.                 Like Documents. In Proceedings of the Third International
  1308.                 Conference on Data and Knowledge Bases, Morgan Kaufmann
  1309.                 Publ. Inc. (1988), pp 19-31
  1310.  
  1311. /Nagl89/        Nagl (ed.): Proc. WG'89 Workshop on Graphtheoretic Concepts
  1312.                 in Computer Science, LNCS 411, Springer-Verlag (1989)
  1313.  
  1314. /NS91/          Nagl, Schuerr: A Specification Environment for Graph Grammars,
  1315.                 in Proc. 4th Int. Workshop on Graph-Grammars and Their
  1316.                 Application to Computer Science, LNCS 532, Springer-
  1317.                 Verlag 1991, pp 599-609
  1318.  
  1319. /Schuerr89/     Schuerr: Introduction to PROGRES, an Attribute Graph Grammar
  1320.                 Based Specification Language, in: /Nagl89/, pp 151-165
  1321.  
  1322. /Schuerr91a/ *  Schuerr: PROGRES: A VHL-Language Based on Graph Grammars,
  1323.                 in Proc. 4th Int. Workshop on Graph-Grammars and Their
  1324.                 Application to Computer Science, LNCS 532, Springer-
  1325.                 Verlag 1991, pp 641-659
  1326.         Also:  Technical Report AIB 90-16
  1327.  
  1328. /Schuerr91b/    Schuerr: Operational Specifications with Programmed Graph
  1329.         Rewriting Systems: Theory, Tools, and Applications, 
  1330.         Dissertation, Deutscher Universitaetsverlag (1991) (in German)
  1331.  
  1332. /SZ91/ *        Schuerr, Zuendorf: Nondeterministic Control Structures for
  1333.                 Graph Rewriting Systems, in Proc. WG'91 Workshop in Graph-
  1334.                 theoretic Concepts in Computer Science, LNCS 570, Springer-
  1335.                 Verlag 1992, pp 48-62
  1336.         Also: Technical Report AIB 91-17
  1337.  
  1338. /Westfe89/      Westfechtel: Extension of a Graph Storage for Software
  1339.                 Documents with Primitives for Undo/Redo and Revision Control.
  1340.                 Technical Report AIB Nr. 89-8, Aachen University of Technology,
  1341.                 1989
  1342.  
  1343. /Westfe91/      Westfechtel: Revisionskontrolle in einer integrierten Soft-
  1344.                 wareentwicklungsumgebung, Dissertation, RWTH Aachen, 1991
  1345.  
  1346. /Zuendorf89/    Zuendorf: Kontrollstrukturen fuer die Spezifikationssprache
  1347.                 PROGRES, Diplomarbeit, RWTH Aachen, 1989
  1348.  
  1349. /Zuendorf92/ *  Zuendorf A.: Implementation of the Imperative/Rule Based
  1350.                 Language PROGRES, Technical Report AIB 92-38, RWTH Aachen,
  1351.                 Germany (1992)
  1352.  
  1353. /Zuendorf93/ *  Zuendorf A.: A Heuristic Solution for the (Sub-) Graph
  1354.                 Isomorphism Problem in Executing PROGRES, Technical
  1355.                 Report AIB 93-5, RWTH Aachen, Germany (1993)
  1356.  
  1357. * : All reports marked with an asterisk are available via anonymous ftp from
  1358.     ftp.informatik.rwth-aachen.de in directory /pub/reports/... .
  1359.  
  1360. See also PROGRES documentation.
  1361.  
  1362. [See also APPENDIX E]
  1363.  
  1364.  
  1365. > IRIS (HP Labs)
  1366.  
  1367. [Iris is a system out of HP Labs that began as a prototype and eventually
  1368. became a commercial product.  I believe it was eventually incorporated into
  1369. the new HP product, OpenODB. - clamen]
  1370.  
  1371. Long and short system summaries can be found in:
  1372.  
  1373. [FISH89] D.H. Fishman et. al. Overview of the Iris DBMS. In Won.
  1374.          Kim and Frederick H. Lochovsky, editors,
  1375.          Object-Oriented Concepts, Databases and Applications,
  1376.          chapter 10, pages 219--250. Addison-Wesley, Reading,
  1377.          MA, 1989.
  1378.  
  1379. [FBC+87] D.H. Fishman, D. Beech, H.P. Cate, E.C. Chow,
  1380.          T. Connors, J.W. Davis, N. Derrett, C.G. Hock, W. Kent,
  1381.          P. Lyngbaek, B. Mahbod, M.A. Neimat, T.A. Tyan, and
  1382.          M.C. Shan. Iris:  An object-oriented database
  1383.          management system. ACM Transactions on Office
  1384.          Information Systems, 5(1):48--69, January 1987.
  1385.  
  1386. The abstract of the latter (written early in the project) follows:
  1387.  
  1388.    The Iris database management system is a research prototype of
  1389.    a next-generation database management system intended  to meet
  1390.    the needs of new and emerging database applications, including
  1391.    office    automation and knowledge-based systems,  engineering
  1392.    test and measurement, and hardware  and software design.  Iris
  1393.    is exploring a rich set of  new database capabilities required
  1394.    by    these   applications,   including  rich    data-modeling
  1395.    constructs, direct  database support for inference,  novel and
  1396.    extensible data types, for example to  support graphic images,
  1397.    voice,    text,   vectors,  and  matrices,    support for long
  1398.    transactions   spanning  minutes  to  many  days, and multiple
  1399.    versions of data.  These capabilities are, in addition  to the
  1400.    usual support for  permanence   of data, controlled   sharing,
  1401.    backup and recovery.
  1402.  
  1403.    The   Iris   DBMS consists   of  (1) a  query   processor that
  1404.    implements  the   Iris object-oriented  data    model, (2)   a
  1405.    Relational Storage Subsystem (RSS) -like  storage manager that
  1406.    provides  access paths and  concurrency  control, backup   and
  1407.    recovery, and (3) a collection of programmatic and interactive
  1408.    interfaces.  The data   model supports  high-level  structural
  1409.    abstractions,  such  as  classification, generalization,   and
  1410.    aggregation, as  well  as behavioral    abstractions.      The
  1411.    interfaces to  Iris  include an  object-oriented extension  to
  1412.    SQL.
  1413.  
  1414.  
  1415. On Schema Evolution (from original survey):
  1416. Objects in the Iris system may acquire or lose types dynamically.
  1417. Thus, if an object no longer matches a changed definition, the user
  1418. can choose to remove the type from the object instead of modifying the
  1419. object to match the type.  In general, Iris tends to restrict class
  1420. modifications so that object modifications are not necessary.  For
  1421. example, a class cannot be removed unless it has no instances and new
  1422. supertype-subtype relationships cannot be established.
  1423.  
  1424.